package cn.iocoder.yudao.module.resource.service.tag;

import cn.iocoder.yudao.module.resource.dal.dataobject.tag.ResourceTagDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 资源标签 Service 接口
 *
 * @author 芋道源码
 */
public interface ResourceTagService {

    /**
     * 创建资源标签
     *
     * @param tagDO 标签信息
     * @return 标签ID
     */
    Long createTag(@Valid ResourceTagDO tagDO);

    /**
     * 更新资源标签
     *
     * @param tagDO 标签信息
     */
    void updateTag(@Valid ResourceTagDO tagDO);

    /**
     * 删除资源标签
     *
     * @param id 标签ID
     */
    void deleteTag(Long id);

    /**
     * 获得资源标签
     *
     * @param id 标签ID
     * @return 资源标签
     */
    ResourceTagDO getTag(Long id);

    /**
     * 获得资源标签列表
     *
     * @return 资源标签列表
     */
    List<ResourceTagDO> getTagList();

    /**
     * 根据名称获得标签
     *
     * @param name 标签名称
     * @return 资源标签
     */
    ResourceTagDO getTagByName(String name);

    /**
     * 根据状态获得标签列表
     *
     * @param status 状态
     * @return 标签列表
     */
    List<ResourceTagDO> getTagListByStatus(Integer status);

}
